# 从django.http模块导入JsonResponse类，用于返回JSON格式的HTTP响应
from django.http import JsonResponse
# 从django.contrib.auth模块导入login函数，用于在当前会话中登录用户
from django.contrib.auth import login
# 从django.contrib.auth.models导入User模型，代表Django的内置用户
from django.contrib.auth.models import User
# 从game.models.player.player模块导入Player模型，假设这是自定义的玩家模型
from game.models.player.player import Player

# 定义一个名为register的视图函数，用于处理用户注册逻辑
def register(request):
    # 从请求的GET参数中获取用户输入的数据
    data = request.GET
    # 获取并清理用户名（去除首尾空格）
    username = data.get("username", "").strip()
    # 获取并清理密码
    password = data.get("password", "").strip()
    # 获取并清理密码确认项
    password_confirm = data.get("password_confirm", "").strip()
    
    # 检查用户名和密码是否为空，如果为空则返回错误信息
    if not username or not password:
        return JsonResponse({'result': "用户名和密码不能为空"})
    
    # 检查两次输入的密码是否一致，如果不一致则返回错误信息
    if password != password_confirm:
        return JsonResponse({'result': "两个密码不一致"})
    
    # 检查数据库中是否已经存在该用户名，如果存在则返回错误信息
    if User.objects.filter(username=username).exists():
        return JsonResponse({'result': "用户名已存在"})
    
    # 创建一个新的User对象，并设置用户名
    user = User(username=username)
    # 设置用户的密码（会自动进行加密处理）
    user.set_password(password)
    # 保存User对象到数据库
    user.save()
    
    # 创建一个与刚创建的User对象相关联的Player对象
    # 并设置一个默认的照片URL（这里是一个示例URL，实际应用中应替换为有效资源）
    Player.objects.create(user=user, photo="https://c-ssl.dtstatic.com/uploads/blog/202105/20/20210520030934_0a67d.thumb.1000_0.jpg")
    
    # 使用login函数在当前会话中登录用户
    login(request, user)
    
    # 返回表示注册成功的JSON响应
    return JsonResponse({'result': "success"})
